package javaCode.chapter03;

//BitOperator 位运算

public class 位运算 {

    public static void main(String[] args){

        //推导过程
        //1. 先得到 2的补码 => 2的原码 00000000 00000000 00000000 00000010
        //   2的补码 00000000 00000000 00000000 00000010
        //2. 3的补码 3的原码 00000000 00000000 00000000 00000011
        //   3的补码 00000000 00000000 00000000 00000011
        //3. 按位&
        //  00000000 00000000 00000000 00000010
        //  00000000 00000000 00000000 00000011
        //  00000000 00000000 00000000 00000010 & 运算后的补码
        //  运算后的原码 也是 00000000 00000000 00000000 00000010
        //  结果就是  2
        System.out.println(2&3);  // 2


        //推导
        //1. 先得到 -2的原码  10000000 00000000 00000000 00000010
        //2. -2的 反码       11111111 11111111 11111111 11111101
        //3. -2的 补码       11111111 11111111 11111111 11111110
        //4. ~-2操作         00000000 00000000 00000000 00000001 运算后的补码
        //5. 运算后的原码 就是 00000000 00000000 00000000 00000001 => 1
        System.out.println(~-2); //1


        //推导
        //1. 得到2的补码 00000000 00000000 00000000 00000010
        //2. ~2操作     11111111 11111111 11111111 11111101   运算后的补码
        //3. 运算后的反码 11111111 11111111 11111111 11111100
        //4. 运算后的原码 10000000 00000000 00000000 00000011
        System.out.println(~2); //-3

    }
}
